home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Spanish Scene 1
/
SpanishScene1.iso
/
spanish pack n°1 by llfb
/
--llfb--
/
programas
/
sources1.dms
/
sources1.adf
/
SOURCES
/
Campos_de_estrellas
/
3DStars.ASM
< prev
next >
Wrap
Assembly Source File
|
1996-06-04
|
16KB
|
614 lines
; Path: pdxgate!reed!batcomputer!rpi!zaphod.mps.ohio-state.edu!cs.utexas.edu!uunet!mcsun!sunic!ugle.unit.no!aun.uninett.no!nuug!ifi.uio.no!larshaug
; From: larshaug@ifi.uio.no (Lars Haugseth)
; Newsgroups: alt.sys.amiga.demos
; Subject: Re: Writing a StarField. Which method is best?
; Message-ID: <1992Nov11.131803.1276@ifi.uio.no>
; Date: 11 Nov 92 13:18:03 GMT
; References: <1992Nov7.104910.60476@cc.usu.edu>
; Sender: larshaug@ifi.uio.no (Lars Haugseth)
; Organization: Dept. of Informatics, University of Oslo, Norway
; Lines: 600
; Nntp-Posting-Host: skalk.ifi.uio.no
; Originator: larshaug@skalk.ifi.uio.no
;
; Here is a small 3D-stars routine, with sine-table and all...
; I have programmed it in AsmOne, but it should work on most
; assemblers without much work.
;
; No flames about coding-technique, please. After all, this is
; alt.sys.amiga.DEMOS ;-)
;
; You can have almost twice as many stars pr.frame if
; you make some heavy tables to avoid the mulus in the
; star-plotting loop. This you'll have to do youself :)
;
; If you can manage more than 810 stars each frame on a plain
; 68000 Amiga500, send me a mail, ok? :)
;
; larshaug@ifi.uio.no (Perplex/PMC)
;
;---------------------------------------
; 3D STARFIELD
;---------------------------------------
NSTARS = 435 ; Number of stars
;---------------------------------------
SECTION code,code_p
START move.l 4.w,a6
move.l 156(a6),a1
move.l 38(a1),OLDCP
bsr SBUFFER
bsr VBLANK
move.l #COPPER,$DFF080
clr.w $DFF088
move.w $DFF01C,OLDIQ
move.w $DFF002,OLDCR
or.w #$8000,OLDIQ
or.w #$8000,OLDCR
move.w #$7FFF,$DFF09A
move.w #$7FFF,$DFF096
move.w #$87C0,$DFF096
move.w #$0000,$DFF180
;---------------------------------------
ICOORDS lea SCOORDS,a0 ; Randomize coordinates
move.w #NSTARS-1,d7
ICOO1 bsr GETRND
and.w #$1FFF,d0
move.w d0,(a0)+
bsr GETRND
and.w #$1FFF,d0
move.w d0,(a0)+
bsr GETRND
and.w #$1FFF,d0
move.w d0,(a0)+
dbf d7,ICOO1
;---------------------------------------
IPERSP lea PERSTAB,a0 ; Construct perspective table
moveq #0,d1
move.l #$95FFFF,d0
IPER1 move.l d0,d2
move.l d1,d3
add.w #300,d3
divu d3,d2
move.w d2,(a0)+
addq.l #1,d1
cmp.l #$2000,d1
bne.s IPER1
;---------------------------------------
IPLOT lea PLTXTAB,a0 ; Construct plot tables
lea PLTBTAB,a1
lea PLTYTAB,a2
moveq #0,d0
IPLO1 move.w d0,d1
lsr.w #3,d1
move.w d1,(a0)+
move.w d0,d1
eor.w #$FFFF,d1
and.w #7,d1
move.w d1,(a1)+
cmp.w #272,d0
bge.s IPLO2
move.w d0,d1
mulu #88,d1
move.w d1,(a2)+
IPLO2 addq.w #1,d0
cmp.w #352,d0
bne.s IPLO1
;---------------------------------------
MAIN bsr.s VBLANK ; Main loop
move.w #$000,$DFF180
btst #2,$DFF016 ; Freeze?
beq.s MAIN
bsr SANIM
bsr SBUFFER
bsr SCLEAR
bsr SDRAW
move.w #$005,$DFF180
btst #6,$BFE001 ; Exit?
bne.s MAIN
;---------------------------------------
EXIT move.w OLDIQ,$DFF09A
move.l OLDCP,$DFF080
move.w OLDCR,$DFF096
clr.w $DFF088
rts
;---------------------------------------
VBLANK cmp.b #0,$DFF006
bne.s VBLANK
btst #0,$DFF005
beq.s VBLANK
rts
WAITB nop
btst #6,$DFF002
bne.s WAITB
rts
;---------------------------------------
GETRND bsr.s GRN1 ; Get random word
and.w #$FF,d5
move.w d5,d0
lsl.w #8,d0
bsr.s GRN1
and.w #$FF,d5
or.w d5,d0
rts
GRN1 move.b $DFF007,d5 ; Get random byte
move.b $BFD800,d6
eor.b d6,d5
moveq #0,d6
move.b d5,d6
ror.b #1,d6
GRN2 dbf d6,GRN2
rts
;---------------------------------------
SDRAW lea SCOORDS,a0 ; Draw starfield
lea PERSTAB,a1
lea PLTXTAB,a2
lea PLTBTAB,a3
lea PLTYTAB,a4
move.l SFPTR+4,a6
move.l a7,SAVEA7
lea $1000.w,a7
movem.w SXADD,d3-d4/a5
add.w #$1000,d3
add.w #$1000,d4
move.w #$1FFF,d5
move.w #NSTARS-1,d7
SDRW1 movem.w (a0)+,d0-d2 ; Get coordinates
add.w d3,d0 ; X-movement
and.w d5,d0
sub.w a7,d0
add.w d4,d1 ; Y-movement
and.w d5,d1
sub.w a7,d1
add.w a5,d2 ; Z-movement
and.w d5,d2
add.w d2,d2
move.w (a1,d2.w),d6
muls d6,d0 ; X-projection
swap d0
add.w #176,d0
cmp.w #351,d0
bhi.s SDRW3
muls d6,d1 ; Y-projection
swap d1
add.w #136,d1
cmp.w #271,d1
bhi.s SDRW3
add.w d0,d0
add.w d1,d1
move.w (a4,d1.w),d6
add.w (a2,d0.w),d6
move.w (a3,d0.w),d0
cmp.w #$2400,d2
bgt.s SDRW2
bset d0,(a6,d6.w)
dbf d7,SDRW1
bra.s SPLOTX
SDRW2: bset d0,$2C(a6,d6.w)
SDRW3: dbf d7,SDRW1
SPLOTX: move.l SAVEA7,a7
rts
;---------------------------------------
SCLEAR bsr WAITB ; Clear starfield
move.l SFPTR+8,$DFF054
move.w #0,$DFF066
move.l #$01000000,$DFF040
move.w #64*272+44,$DFF058
rts
;---------------------------------------
SBUFFER lea SFPTR,a0 ; Triple buffering
movem.l (a0),d0-d2
exg d0,d1
exg d1,d2
movem.l d0-d2,(a0)
move.l SFPTR,d0
move.l SFPTR,d1
add.l #$002C,d1
move.w d0,C1PL1+6
swap d0
move.w d0,C1PL1+2
move.w d1,C1PL2+6
swap d1
move.w d1,C1PL2+2
rts
;---------------------------------------
SANIM lea SSINUS,a0 ; Animate star-movement
move.w SXPOS,d0
move.w SYPOS,d1
move.w SZPOS,d2
add.w SXSPD,d0
add.w SYSPD,d1
add.w SZSPD,d2
and.w #$7FE,d0
and.w #$7FE,d1
and.w #$7FE,d2
move.w d0,SXPOS
move.w d1,SYPOS
move.w d2,SZPOS
move.w SXADD,d3
move.w SYADD,d4
move.w SZADD,d5
add.w (a0,d0.w),d3
add.w (a0,d1.w),d4
add.w (a0,d2.w),d5
move.w d3,SXADD
move.w d4,SYADD
move.w d5,SZADD
rts
;---------------------------------------
SECTION copper,data_c
COPPER dc.w $0092,$0030
dc.w $0094,$00D8
dc.w $008E,$2C71
dc.w $0090,$2CD1
dc.w $0102,$0000
dc.w $0108,$002C
dc.w $010A,$002C
dc.w $2307,$FFFE
dc.w $0182,$0DDD
dc.w $0184,$0888
dc.w $0186,$0DDD
dc.w $2407,$FFFE
dc.w $0100,$2200
C1PL1 dc.w $00E0,$0000
dc.w $00E2,$0000
C1PL2 dc.w $00E4,$0000
dc.w $00E6,$0000
dc.w $FFDF,$FFFE
dc.w $3407,$FFFE
dc.w $0100,$0000
dc.w $FFFF,$FFFE
;---------------------------------------
SECTION data,data_p
OLDSP dc.l 0 ; Temporaries
OLDCP dc.l 0
OLDCR dc.w 0
OLDIQ dc.w 0
SAVEA7 dc.l 0
SXADD dc.w 33 ; Star movement
SYADD dc.w 12
SZADD dc.w -114
SXPOS dc.w 0 ; Sinus positions
SYPOS dc.w $136
SZPOS dc.w $500
SXSPD dc.w -4 ; Sinus speeds
SYSPD dc.w 6
SZSPD dc.w 2
SFPTR dc.l SPLANE1 ; Starfield pointers
dc.l SPLANE2
dc.l SPLANE3
SCOORDS blk.w 3*NSTARS ; Star coordinates
PERSTAB blk.w $2000,0 ; Perspective table
PLTXTAB blk.w 352,0 ; Plot tables
PLTBTAB blk.w 352,0
PLTYTAB blk.w 272,0
;---------------------------------------
SSINUS DC.B $00,$00,$00,$00,$00,$00,$00,$01
DC.B $00,$01,$00,$02,$00,$02,$00,$03
DC.B $00,$03,$00,$03,$00,$04,$00,$04
DC.B $00,$05,$00,$05,$00,$06,$00,$06
DC.B $00,$06,$00,$07,$00,$07,$00,$08
DC.B $00,$08,$00,$09,$00,$09,$00,$09
DC.B $00,$0A,$00,$0A,$00,$0B,$00,$0B
DC.B $00,$0B,$00,$0C,$00,$0C,$00,$0D
DC.B $00,$0D,$00,$0E,$00,$0E,$00,$0E
DC.B $00,$0F,$00,$0F,$00,$10,$00,$10
DC.B $00,$11,$00,$11,$00,$11,$00,$12
DC.B $00,$12,$00,$13,$00,$13,$00,$13
DC.B $00,$14,$00,$14,$00,$15,$00,$15
DC.B $00,$15,$00,$16,$00,$16,$00,$17
DC.B $00,$17,$00,$18,$00,$18,$00,$18
DC.B $00,$19,$00,$19,$00,$1A,$00,$1A
DC.B $00,$1A,$00,$1B,$00,$1B,$00,$1B
DC.B $00,$1C,$00,$1C,$00,$1D,$00,$1D
DC.B $00,$1D,$00,$1E,$00,$1E,$00,$1F
DC.B $00,$1F,$00,$1F,$00,$20,$00,$20
DC.B $00,$21,$00,$21,$00,$21,$00,$22
DC.B $00,$22,$00,$22,$00,$23,$00,$23
DC.B $00,$24,$00,$24,$00,$24,$00,$25
DC.B $00,$25,$00,$25,$00,$26,$00,$26
DC.B $00,$26,$00,$27,$00,$27,$00,$27
DC.B $00,$28,$00,$28,$00,$29,$00,$29
DC.B $00,$29,$00,$2A,$00,$2A,$00,$2A
DC.B $00,$2B,$00,$2B,$00,$2B,$00,$2C
DC.B $00,$2C,$00,$2C,$00,$2D,$00,$2D
DC.B $00,$2D,$00,$2E,$00,$2E,$00,$2E
DC.B $00,$2F,$00,$2F,$00,$2F,$00,$2F
DC.B $00,$30,$00,$30,$00,$30,$00,$31
DC.B $00,$31,$00,$31,$00,$32,$00,$32
DC.B $00,$32,$00,$33,$00,$33,$00,$33
DC.B $00,$33,$00,$34,$00,$34,$00,$34
DC.B $00,$35,$00,$35,$00,$35,$00,$35
DC.B $00,$36,$00,$36,$00,$36,$00,$36
DC.B $00,$37,$00,$37,$00,$37,$00,$38
DC.B $00,$38,$00,$38,$00,$38,$00,$39
DC.B $00,$39,$00,$39,$00,$39,$00,$3A
DC.B $00,$3A,$00,$3A,$00,$3A,$00,$3A
DC.B $00,$3B,$00,$3B,$00,$3B,$00,$3B
DC.B $00,$3C,$00,$3C,$00,$3C,$00,$3C
DC.B $00,$3C,$00,$3D,$00,$3D,$00,$3D
DC.B $00,$3D,$00,$3D,$00,$3E,$00,$3E
DC.B $00,$3E,$00,$3E,$00,$3E,$00,$3F
DC.B $00,$3F,$00,$3F,$00,$3F,$00,$3F
DC.B $00,$40,$00,$40,$00,$40,$00,$40
DC.B $00,$40,$00,$40,$00,$41,$00,$41
DC.B $00,$41,$00,$41,$00,$41,$00,$41
DC.B $00,$41,$00,$42,$00,$42,$00,$42
DC.B $00,$42,$00,$42,$00,$42,$00,$42
DC.B $00,$43,$00,$43,$00,$43,$00,$43
DC.B $00,$43,$00,$43,$00,$43,$00,$43
DC.B $00,$43,$00,$44,$00,$44,$00,$44
DC.B $00,$44,$00,$44,$00,$44,$00,$44
DC.B $00,$44,$00,$44,$00,$44,$00,$44
DC.B $00,$44,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$45,$00,$45,$00,$45,$00,$45
DC.B $00,$44,$00,$44,$00,$44,$00,$44
DC.B $00,$44,$00,$44,$00,$44,$00,$44
DC.B $00,$44,$00,$44,$00,$44,$00,$43
DC.B $00,$43,$00,$43,$00,$43,$00,$43
DC.B $00,$43,$00,$43,$00,$43,$00,$43
DC.B $00,$42,$00,$42,$00,$42,$00,$42
DC.B $00,$42,$00,$42,$00,$42,$00,$42
DC.B $00,$41,$00,$41,$00,$41,$00,$41
DC.B $00,$41,$00,$41,$00,$40,$00,$40
DC.B $00,$40,$00,$40,$00,$40,$00,$40
DC.B $00,$3F,$00,$3F,$00,$3F,$00,$3F
DC.B $00,$3F,$00,$3F,$00,$3E,$00,$3E
DC.B $00,$3E,$00,$3E,$00,$3E,$00,$3D
DC.B $00,$3D,$00,$3D,$00,$3D,$00,$3D
DC.B $00,$3C,$00,$3C,$00,$3C,$00,$3C
DC.B $00,$3B,$00,$3B,$00,$3B,$00,$3B
DC.B $00,$3B,$00,$3A,$00,$3A,$00,$3A
DC.B $00,$3A,$00,$39,$00,$39,$00,$39
DC.B $00,$39,$00,$38,$00,$38,$00,$38
DC.B $00,$38,$00,$37,$00,$37,$00,$37
DC.B $00,$37,$00,$36,$00,$36,$00,$36
DC.B $00,$36,$00,$35,$00,$35,$00,$35
DC.B $00,$34,$00,$34,$00,$34,$00,$34
DC.B $00,$33,$00,$33,$00,$33,$00,$32
DC.B $00,$32,$00,$32,$00,$31,$00,$31
DC.B $00,$31,$00,$31,$00,$30,$00,$30
DC.B $00,$30,$00,$2F,$00,$2F,$00,$2F
DC.B $00,$2E,$00,$2E,$00,$2E,$00,$2D
DC.B $00,$2D,$00,$2D,$00,$2C,$00,$2C
DC.B $00,$2C,$00,$2B,$00,$2B,$00,$2B
DC.B $00,$2A,$00,$2A,$00,$2A,$00,$29
DC.B $00,$29,$00,$29,$00,$28,$00,$28
DC.B $00,$28,$00,$27,$00,$27,$00,$27
DC.B $00,$26,$00,$26,$00,$26,$00,$25
DC.B $00,$25,$00,$24,$00,$24,$00,$24
DC.B $00,$23,$00,$23,$00,$23,$00,$22
DC.B $00,$22,$00,$21,$00,$21,$00,$21
DC.B $00,$20,$00,$20,$00,$20,$00,$1F
DC.B $00,$1F,$00,$1E,$00,$1E,$00,$1E
DC.B $00,$1D,$00,$1D,$00,$1C,$00,$1C
DC.B $00,$1C,$00,$1B,$00,$1B,$00,$1B
DC.B $00,$1A,$00,$1A,$00,$19,$00,$19
DC.B $00,$19,$00,$18,$00,$18,$00,$17
DC.B $00,$17,$00,$16,$00,$16,$00,$16
DC.B $00,$15,$00,$15,$00,$14,$00,$14
DC.B $00,$14,$00,$13,$00,$13,$00,$12
DC.B $00,$12,$00,$12,$00,$11,$00,$11
DC.B $00,$10,$00,$10,$00,$0F,$00,$0F
DC.B $00,$0F,$00,$0E,$00,$0E,$00,$0D
DC.B $00,$0D,$00,$0D,$00,$0C,$00,$0C
DC.B $00,$0B,$00,$0B,$00,$0A,$00,$0A
DC.B $00,$0A,$00,$09,$00,$09,$00,$08
DC.B $00,$08,$00,$07,$00,$07,$00,$07
DC.B $00,$06,$00,$06,$00,$05,$00,$05
DC.B $00,$04,$00,$04,$00,$04,$00,$03
DC.B $00,$03,$00,$02,$00,$02,$00,$01
DC.B $00,$01,$00,$01,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$FF,$FF,$FF,$FF
DC.B $FF,$FF,$FF,$FE,$FF,$FE,$FF,$FD
DC.B $FF,$FD,$FF,$FC,$FF,$FC,$FF,$FC
DC.B $FF,$FB,$FF,$FB,$FF,$FA,$FF,$FA
DC.B $FF,$F9,$FF,$F9,$FF,$F9,$FF,$F8
DC.B $FF,$F8,$FF,$F7,$FF,$F7,$FF,$F6
DC.B $FF,$F6,$FF,$F6,$FF,$F5,$FF,$F5
DC.B $FF,$F4,$FF,$F4,$FF,$F3,$FF,$F3
DC.B $FF,$F3,$FF,$F2,$FF,$F2,$FF,$F1
DC.B $FF,$F1,$FF,$F1,$FF,$F0,$FF,$F0
DC.B $FF,$EF,$FF,$EF,$FF,$EE,$FF,$EE
DC.B $FF,$EE,$FF,$ED,$FF,$ED,$FF,$EC
DC.B $FF,$EC,$FF,$EC,$FF,$EB,$FF,$EB
DC.B $FF,$EA,$FF,$EA,$FF,$EA,$FF,$E9
DC.B $FF,$E9,$FF,$E8,$FF,$E8,$FF,$E7
DC.B $FF,$E7,$FF,$E7,$FF,$E6,$FF,$E6
DC.B $FF,$E5,$FF,$E5,$FF,$E5,$FF,$E4
DC.B $FF,$E4,$FF,$E4,$FF,$E3,$FF,$E3
DC.B $FF,$E2,$FF,$E2,$FF,$E2,$FF,$E1
DC.B $FF,$E1,$FF,$E0,$FF,$E0,$FF,$E0
DC.B $FF,$DF,$FF,$DF,$FF,$DF,$FF,$DE
DC.B $FF,$DE,$FF,$DD,$FF,$DD,$FF,$DD
DC.B $FF,$DC,$FF,$DC,$FF,$DC,$FF,$DB
DC.B $FF,$DB,$FF,$DA,$FF,$DA,$FF,$DA
DC.B $FF,$D9,$FF,$D9,$FF,$D9,$FF,$D8
DC.B $FF,$D8,$FF,$D8,$FF,$D7,$FF,$D7
DC.B $FF,$D7,$FF,$D6,$FF,$D6,$FF,$D6
DC.B $FF,$D5,$FF,$D5,$FF,$D5,$FF,$D4
DC.B $FF,$D4,$FF,$D4,$FF,$D3,$FF,$D3
DC.B $FF,$D3,$FF,$D2,$FF,$D2,$FF,$D2
DC.B $FF,$D1,$FF,$D1,$FF,$D1,$FF,$D0
DC.B $FF,$D0,$FF,$D0,$FF,$CF,$FF,$CF
DC.B $FF,$CF,$FF,$CF,$FF,$CE,$FF,$CE
DC.B $FF,$CE,$FF,$CD,$FF,$CD,$FF,$CD
DC.B $FF,$CC,$FF,$CC,$FF,$CC,$FF,$CC
DC.B $FF,$CB,$FF,$CB,$FF,$CB,$FF,$CA
DC.B $FF,$CA,$FF,$CA,$FF,$CA,$FF,$C9
DC.B $FF,$C9,$FF,$C9,$FF,$C9,$FF,$C8
DC.B $FF,$C8,$FF,$C8,$FF,$C8,$FF,$C7
DC.B $FF,$C7,$FF,$C7,$FF,$C7,$FF,$C6
DC.B $FF,$C6,$FF,$C6,$FF,$C6,$FF,$C5
DC.B $FF,$C5,$FF,$C5,$FF,$C5,$FF,$C5
DC.B $FF,$C4,$FF,$C4,$FF,$C4,$FF,$C4
DC.B $FF,$C3,$FF,$C3,$FF,$C3,$FF,$C3
DC.B $FF,$C3,$FF,$C2,$FF,$C2,$FF,$C2
DC.B $FF,$C2,$FF,$C2,$FF,$C1,$FF,$C1
DC.B $FF,$C1,$FF,$C1,$FF,$C1,$FF,$C1
DC.B $FF,$C0,$FF,$C0,$FF,$C0,$FF,$C0
DC.B $FF,$C0,$FF,$C0,$FF,$BF,$FF,$BF
DC.B $FF,$BF,$FF,$BF,$FF,$BF,$FF,$BF
DC.B $FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
DC.B $FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
DC.B $FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
DC.B $FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
DC.B $FF,$BD,$FF,$BC,$FF,$BC,$FF,$BC
DC.B $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
DC.B $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BB
DC.B $FF,$BB,$FF,$BB,$FF,$BB,$FF,$BC
DC.B $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
DC.B $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BC
DC.B $FF,$BC,$FF,$BC,$FF,$BC,$FF,$BD
DC.B $FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
DC.B $FF,$BD,$FF,$BD,$FF,$BD,$FF,$BD
DC.B $FF,$BE,$FF,$BE,$FF,$BE,$FF,$BE
DC.B $FF,$BE,$FF,$BE,$FF,$BE,$FF,$BF
DC.B $FF,$BF,$FF,$BF,$FF,$BF,$FF,$BF
DC.B $FF,$BF,$FF,$BF,$FF,$C0,$FF,$C0
DC.B $FF,$C0,$FF,$C0,$FF,$C0,$FF,$C0
DC.B $FF,$C1,$FF,$C1,$FF,$C1,$FF,$C1
DC.B $FF,$C1,$FF,$C2,$FF,$C2,$FF,$C2
DC.B $FF,$C2,$FF,$C2,$FF,$C3,$FF,$C3
DC.B $FF,$C3,$FF,$C3,$FF,$C3,$FF,$C4
DC.B $FF,$C4,$FF,$C4,$FF,$C4,$FF,$C4
DC.B $FF,$C5,$FF,$C5,$FF,$C5,$FF,$C5
DC.B $FF,$C6,$FF,$C6,$FF,$C6,$FF,$C6
DC.B $FF,$C7,$FF,$C7,$FF,$C7,$FF,$C7
DC.B $FF,$C7,$FF,$C8,$FF,$C8,$FF,$C8
DC.B $FF,$C8,$FF,$C9,$FF,$C9,$FF,$C9
DC.B $FF,$CA,$FF,$CA,$FF,$CA,$FF,$CA
DC.B $FF,$CB,$FF,$CB,$FF,$CB,$FF,$CB
DC.B $FF,$CC,$FF,$CC,$FF,$CC,$FF,$CD
DC.B $FF,$CD,$FF,$CD,$FF,$CD,$FF,$CE
DC.B $FF,$CE,$FF,$CE,$FF,$CF,$FF,$CF
DC.B $FF,$CF,$FF,$D0,$FF,$D0,$FF,$D0
DC.B $FF,$D1,$FF,$D1,$FF,$D1,$FF,$D1
DC.B $FF,$D2,$FF,$D2,$FF,$D2,$FF,$D3
DC.B $FF,$D3,$FF,$D3,$FF,$D4,$FF,$D4
DC.B $FF,$D4,$FF,$D5,$FF,$D5,$FF,$D5
DC.B $FF,$D6,$FF,$D6,$FF,$D6,$FF,$D7
DC.B $FF,$D7,$FF,$D7,$FF,$D8,$FF,$D8
DC.B $FF,$D9,$FF,$D9,$FF,$D9,$FF,$DA
DC.B $FF,$DA,$FF,$DA,$FF,$DB,$FF,$DB
DC.B $FF,$DB,$FF,$DC,$FF,$DC,$FF,$DC
DC.B $FF,$DD,$FF,$DD,$FF,$DE,$FF,$DE
DC.B $FF,$DE,$FF,$DF,$FF,$DF,$FF,$DF
DC.B $FF,$E0,$FF,$E0,$FF,$E1,$FF,$E1
DC.B $FF,$E1,$FF,$E2,$FF,$E2,$FF,$E3
DC.B $FF,$E3,$FF,$E3,$FF,$E4,$FF,$E4
DC.B $FF,$E5,$FF,$E5,$FF,$E5,$FF,$E6
DC.B $FF,$E6,$FF,$E6,$FF,$E7,$FF,$E7
DC.B $FF,$E8,$FF,$E8,$FF,$E8,$FF,$E9
DC.B $FF,$E9,$FF,$EA,$FF,$EA,$FF,$EB
DC.B $FF,$EB,$FF,$EB,$FF,$EC,$FF,$EC
DC.B $FF,$ED,$FF,$ED,$FF,$ED,$FF,$EE
DC.B $FF,$EE,$FF,$EF,$FF,$EF,$FF,$EF
DC.B $FF,$F0,$FF,$F0,$FF,$F1,$FF,$F1
DC.B $FF,$F2,$FF,$F2,$FF,$F2,$FF,$F3
DC.B $FF,$F3,$FF,$F4,$FF,$F4,$FF,$F5
DC.B $FF,$F5,$FF,$F5,$FF,$F6,$FF,$F6
DC.B $FF,$F7,$FF,$F7,$FF,$F8,$FF,$F8
DC.B $FF,$F8,$FF,$F9,$FF,$F9,$FF,$FA
DC.B $FF,$FA,$FF,$FA,$FF,$FB,$FF,$FB
DC.B $FF,$FC,$FF,$FC,$FF,$FD,$FF,$FD
DC.B $FF,$FD,$FF,$FE,$FF,$FE,$FF,$FF
DC.B $FF,$FF,$00,$00,$00,$00,$00,$00
;---------------------------------------
SECTION gfx,data_c
SPLANE1 blk.b $5D80,0 ; Starfield bitmaps
SPLANE2 blk.b $5D80,0
SPLANE3 blk.b $5D80,0